Apparatus, methods and articles of manufacture for software demonstration

ABSTRACT

Apparatus, methods and articles of manufacture for software demonstration are disclosed. Apparatus include a server that provides, via a network, a program or programs to be demonstrated to a user. The user uploads the code that the program will execute. Results are then supplied after execution, and may be made available to the user in a number of ways. Methods and articles of manufacture are also disclosed.

FIELD OF THE INVENTION

The present invention relates to software demonstration. More specifically, the present invention relates to software demonstration through computer networks.

BACKGROUND OF THE INVENTION

Providing software for user demonstration may be difficult. For example, a stand alone software product may be demonstrated through physically delivering a trial copy to a user, or permitting download of a trial copy and subsequent installation on a user's machine, and there are few technical difficulties associated with such procedures. However, if the software is not standalone, and/or requires installation and integration with existing software, a demonstration cannot easily be installed and less easily removed from a user's system.

One example of software that needs integration into a user's system or network is email system software. Email system software usually requires installation on a server and configuration to accommodate the network and its users. Although demonstration copies can be provided on demonstration machines, the peculiarities of a user's system and/or network may make any such demonstration of such a software product less than convincing.

If the software is being offered as a service, such as might be done by an Application Service Provider (“ASP”) with an email scanning service, demonstration difficulties are multiplied. When email scanning software is offered as a service, a live demonstration requires resources—a sales person for example, with a properly configured machine. Similar to the difficulties noted above with regard to demonstrating a product, demonstrating a service on a machine or network other than a user's machine or network may simply be unconvincing.

Internet based demonstrations do eliminate at least one difficulty associated with software demonstration of either a service or product by making distribution of a trial product or service less costly than physical demonstration. However, Internet demonstrations of a software service that requires integration with a user's system or network, such as an email system, may be impossible because the Internet or file server offering the demonstration software service is not the user's. Thus, integration issues cannot be revealed in such a demonstration.

Certain methods have been developed to attempt to solve software service distribution difficulties. For example, a virus scanning service for email may let the user send his or her email to a server for virus scanning. This method often provides an open relay. In other words, email is sent to a server and the server scans the email and then forwards the email according to its address. The problem with this method is that open relay mail servers are insecure, for example, an email server may be used to distribute unsolicited bulk email (UBE); as a platform of attack for an email denial of service, etc. Difficulties may multiply—once a mail server is being used to distribute UBE or in another unauthorized fashion, the server may be blacklisted or isolated from other email servers through placement on a DNS blocked list, etc. Thus an open relay method may be unacceptable.

Another method is to allow potential customers to send email to the server which is then processed and returned to the sender. However, this method may also be unacceptable because a user may intercept email that is to be returned to the sender. For example, a malicious user could surreptitiously install a program on the demonstration server that allows the interception of email.

Accordingly, there exists a need for improved apparatus, methods and articles of manufacture for demonstrating software.

SUMMARY OF THE INVENTION

The present invention comprises apparatus, methods and articles of manufacture for software demonstration. Methods comprise providing an identified user with access, via a network, to a server comprising a program to be demonstrated; receiving code from the user that will be executed by the program; executing the code within the program to be demonstrated; and, providing any results of the execution. Thus the user and others can review the performance of the software to be demonstrated on data supplied by the user, without implicating the user's system. Moreover, embodiments are made available over the Internet. Apparatus and articles of manufacture are also disclosed.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows the use of a preferred embodiment.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The present invention comprises apparatus, methods and articles of manufacture for software demonstration. Embodiments may provide demonstrations of programs upon user-supplied code (“code” as used herein generally includes text, data, and files, as well as binaries) in any number of ways desired, for example, a single product (e.g., an email scanner from a single vendor,) a comparison of products in the same market (e.g., email scanners from different vendors) products in different markets (e.g., email scanners and proscribed code scanners,) combinations of these, etc.

FIG. 1 shows a email antivirus scanner program 30 accessible to user 20 via server 10 over network a. In this and other preferred embodiments, network a is the Internet, and server 10 is generally available via the Internet.

User 20 obtains access to program 30 in various ways in various embodiments. Generally, the preferred embodiments provide limited secured access through user identification as is further described below. However, it should be noted that access may be provided, in other embodiments, according to any methods. For example, access may be provided without restriction to any user, predefined restrictions may be applied to users as desired, etc.

Limited secured access is controlled a number of ways in various preferred embodiments. Generally, in the preferred antivirus email embodiments, a unique, operational email address, generated manually and/or automatically, is used to both identify the user and provide a destination for the user's email to be tested for the demonstration, as will be explained further below. For example, in a preferred embodiment a user may fill out a registration form, and then be contacted by the demonstrator's operator, in order to be provided with an demonstration email address and password. As another example, a user may automatically be provided with a demonstration email address upon filling out a registration form. (In yet other embodiments, further identification may be required, e.g. credit cards, personal information, etc.) In especially preferred embodiments, the server will automatically create a user id. One method of doing so used in an especially preferred embodiment is to assign the user an id based upon the email address the user has used to submit the sample. That email address then becomes the user id.

Additionally, embodiments may attempt to simplify user email addressing, by, for example, allowing a user to provide her own email prefix, to be appended to a demonstrator provided email domain. Of course, in email and other embodiments, other idenification methods can be used, such as an ID number, password, etc. Moreover, it should be noted, an identified user may be able to use an embodiment once or more than once, in a variety of ways, such as for a predetermined time, with a predetermined amount of data, etc.

Returning to FIG. 1, once user 20 obtains access to program 30, she uses the provided email address to send, forward or otherwise transmit the email to be scanned by the demonstrator. In the preferred embodiments, the email to be scanned is limited, e.g., by numbers, by size, by allowed attachments, etc.

Program 30 then demonstrates its attributes on the emails provided by the user e.g., by scanning for proscribed code. Program 30 returns the results to server 10, where it is displayed as a web page, accessible via any commonly available web browser.

The user then logs onto server 10 to retrieve the demonstration results. Results are presented as a web page, which may have been constructed in any number of ways as known in the art, e.g. Active Server Pages, PHP, Perl, HTML, XML, jsp, etc. The results will, of course, vary with the program to be demonstrated. For example, an antivirus program will show the results of its scan on the user-provided emails, an antispam scanner will show its results, etc. Generally, the results of any particular program will be displayed in a web page using the reporting capabilities of that particular program. It may also be desired, however, to provide results in other formats, for example, standardized formats across programs to be demonstrated, via email to a user address, etc. and so results may be presented in a predetermined format as well.

Thus the user is able to view the efficacy of the demonstrated program. If desired, in certain embodiments, a link may then be provided to purchase the demonstrated program, if the user desires.

Data obtained from the demonstrations may be retained on an as-desired basis; for example, daily, weekly, as run, when server space becomes limited, etc. Data obtained from the demonstrations may also be used to refine demonstration programs, if desired.

Of course, various embodiments may use various operating systems and technologies. For example, servers may be used that run on Sun Solaris® Unix®, as well as other Unix® and Unix®-like platforms, including but not limited to Linux® and its variants, OS X, as well as other operating system platforms and code including but not limited to Microsoft Server 2003, Microsoft Windows® XP, Windows® NT, Windows® 2000, Windows® 95, 98 CE and Me, IBM OS/390, MacOS, VxWorks,® Palm OS, Symbian, Java and others. The demonstration system may be present in a different operating system than the user's machine, as all that may be necessary for the user is a web browser, in those web-based embodiments. Moreover, embodiments may be constructed in a number of ways, e.g., present on a single server, where the program to be demonstrated resides on that server, across a number of servers, machines, in a distributed fashion, etc.

Embodiments may be highly secured systems as well and use various security methods, both described herein and as known in the art, to secure access. Increased security may also be provided in various embodiments through other methods. For example, passwords may be used in various manners in order to attempt to increase security of the embodiment. For example, either or both providing data and receiving results may be subject to password protection, and that password protection may be used in a number of ways. For example, passwords may be required by the system in the headers or body of a forwarded message; to display of test results, etc.

Embodiments may also provide secure shut down mechanisms. So, for example, if an embodiment detects that it is under a denial of service attack via mail flood or any other method, from another node, system or systems on the network, it can configure itself and/or a network gateway to temporarily not accept connections from the node, system or systems that are doing the attack. The embodiment would then report the attack to a network administrator.

Embodiments may also remove user emails on a predetermined schedule. For example, any email addresses that are not assigned to an active user (one using the system for demonstration purposes) may be removed as soon as possible, on a regular schedule, etc. As another example, the server may be moved from domain to domain in order to minimize tampering. Email addresses may then be removed, be made unusable, etc.

Demonstrations may be of any programs desired and, in various embodiments, one or more programs may be made available for demonstration. In certain preferred embodiments, those products made available for demonstration may be from a single vendor. Yet other preferred embodiments may make products available from multiple vendors for demonstration, e.g., comparative testing offered by network and/or web-based retailers, reviewers, etc. Thus, the same user provided data may be used to test a number of programs, e.g. a user might desire to test competing antivirus programs, competing compilers, etc. and results from each program be provided accordingly. It should be noted that any number of programs may be demonstrated as desired, as well as upgrades, patches, maintenance fixes, etc.

As embodiments may be provided to demonstrate various types of software, embodiments may provide, to a server or servers containing the program or programs to be demonstrated, any type of user provided code. For example, a user may provide code specific to the demonstration and so may provide other types of code instead of, or in addition to, email. For example, user provided code may be transmitted in order to have a server demonstration of instant messaging code, peer-to-peer code, validity checker(s), syntax checker(s), etc.

Embodiments are available as desired. For example, because of their automated nature, an embodiment may be made available constantly over the Internet, and thus accessible to users.

The above description and the views and material depicted by the figures are for purposes of illustration only and are not intended to be, and should not be construed as, limitations on the invention. Moreover, certain modifications or alternatives may suggest themselves to those skilled in the art upon reading of this specification, all of which are intended to be within the spirit and scope of the present invention as defined in the attached claims. 

1) A method for software demonstration comprising: providing an identified user with access, via a network, to a server comprising a program to be demonstrated; receiving code from said identified user; executing said program to be demonstrated using said code; and, providing any results of said execution. 2) A method as in claim 1 wherein said server is a highly secured server. 3) A method as in claim 1 wherein said providing an identified user with access, via a network, to a server comprising a program to be demonstrated further comprises identifying a user and providing said identified user with access, via a network, to a server comprising a program to be demonstrated. 4) A method as in claim 1 wherein said providing an identified user with access, via a network, to a server comprising a program to be demonstrated further comprises identifying a user and providing said identified user with access, via the Internet, to a server comprising a program to be demonstrated. 5) A method as in claim 4 wherein said identifying a user further comprises identifying a user through supplying a user with a unique, operational email address. 6) A method as in claim 4 wherein said identifying a user further comprises identifying a user through supplying a user with a unique, operational user ID. 7) A method as in claim 1 wherein said providing an identified user with access, via a network, to a server comprising a program to be demonstrated further comprises providing an identified user with access, via a network, to a server comprising an email scanning program to be demonstrated. 8) A method as in claim 1 wherein said providing an identified user with access, via a network, to a server comprising a program to be demonstrated further comprises providing an identified user with access, via a network, to a server comprising a proscribed code scanner program to be demonstrated. 9) A method as in claim 1 wherein said receiving code from said identified user further comprises receiving email from said identified user. 10) A method as in claim 9 wherein said receiving email from said identified user further comprises receiving a predetermined amount of email from said identified user. 11) A method as in claim 1 wherein said receiving code from said identified user further comprises receiving code for a predetermined time from said identified user. 12) A method as in claim 1 wherein said executing said program to be demonstrated using said code further comprises executing an email scanning program to be demonstrated using email provided by said user. 13) A method as in claim 1 wherein said providing any results of said execution further comprises providing any results of said execution via a web page. 14) A method as in claim 1 further comprising providing said identified user with an option to purchase said program. 15) A method as in claim 1 further comprising providing said server with a secure shut down mechanism. 16) A method for software demonstration comprising: providing an identified user with access, via a network, to a server comprising at least two programs to be demonstrated; receiving code from said identified user; executing said programs to be demonstrated using said code; and, providing any results of said execution. 17) A method for software demonstration comprising: identifying a user; providing said identified user with access, via the Internet, to a server comprising a program to be demonstrated; receiving email from said identified user; executing said program to be demonstrated using said email; and, providing any results of said execution via a web page. 18) An apparatus for software demonstration comprising: a program to be demonstrated; a server, accessible to an identified user, said server being configured to receive code from said identified user, execute said received code with said program to be demonstrated, and provide results of said execution. 19) An apparatus as in claim 18 wherein said program to be demonstrated comprises an email scanning program. 20) An apparatus as in claim 18 wherein said serer is configured to receive email from said identified user. 21) An apparatus as in claim 18 wherein said server is accessible to said identified user via the Internet. 22) An apparatus as in claim 18 wherein said server is configured to provide results of said execution via a web page. 23) An apparatus as in claim 18 wherein said apparatus is in distributed form. 24) An article of manufacture comprising a web site providing access to a program to be demonstrated, whereby said program to be demonstrated is capable of executing code provided by an identified user and said web site further provides results of said execution. 25) An article as in claim 24 wherein said website further provides results of said execution via a web page. 